Dashboard.addWidget({ getId : function(){ return 'table-chart-widget'; }, getName : function(){ return 'Table Chart'; }, getDescription : function(){ return { en : 'Widget that display a KPI in a table', de : 'Widget that display a KPI in a table' }; }, getIconClass : function(){ return 'glyphicon glyphicon-th-list'; }, createContent : function(configuration, currentWidgetInstanceId){ var kpiInfo = ModelManager.getKpiInfo(configuration.modelId.value, configuration.kpiId.value); var kpiMeasure = Dashboard.evaluateKpi(currentWidgetInstanceId, configuration.modelId.value, configuration.kpiId.value); var tableHtml = ''; kpiMeasure.columns.forEach(function(item){ tableHtml += ''; }); tableHtml += ''; kpiMeasure.data.forEach(function(dataItem){ tableHtml += ''; kpiMeasure.columns.forEach(function(columnName){ tableHtml += ''; }); tableHtml += ''; }); tableHtml += '
'+item+'
' + (dataItem[columnName]!=null?dataItem[columnName] + ' ' + kpiInfo.getFieldInfos(columnName).measureUnit:'') + '
'; var tableDom = $(tableHtml); /*.popover({ placement : 'auto right', container : 'body', html : true, title : kpiInfo.name + ' measure additional infos', content : function(){ var html = ''; for(var moreInfoKey in kpiMeasure.moreInfo) html += ''; if(Object.keys(kpiMeasure.moreInfo).length==0) html += ''; html += '
'+moreInfoKey+''+kpiMeasure.moreInfo[moreInfoKey]+'
No additional infos available
'; return html; }(), trigger : 'hover' });*/ var kpiInfoPopoverConfig = { placement : 'auto right', container : 'body', html : true, title : kpiInfo.name + ' additional infos', content : function(){ var html = ''; html += ''; if(kpiInfo.type!=null) html += ''; for(var moreInfoKey in kpiInfo.moreInfo) html += ''; if(Object.keys(kpiInfo.moreInfo).length==0 && kpiInfo.type==null) html += ''; html += ''; for(var moreInfoKey in kpiMeasure.moreInfo) html += ''; if(Object.keys(kpiMeasure.moreInfo).length==0) html += ''; html += '
KPI additional infos
type'+kpiInfo.type+'
'+moreInfoKey+''+kpiInfo.moreInfo[moreInfoKey]+'
No additional infos available
Measures additional infos
'+moreInfoKey+''+kpiMeasure.moreInfo[moreInfoKey]+'
No additional infos available
'; html += ''; return html; }(), trigger : 'hover' }; var _createCircleCode = function(color){ return''; } var targetRangeStatusDom = null; if(kpiMeasure.targetRangeAlgorithmResult!=null){ var targetRangeStatus = kpiMeasure.targetRangeAlgorithmResult.status; var targetRangeStatusHtml = _createCircleCode(targetRangeStatus==null?'lightgrey':(targetRangeStatus>0?'green':(targetRangeStatus<0?'red':'grey'))); targetRangeStatusDom = $('
').append($(targetRangeStatusHtml)).popover({ placement : 'auto right', container : 'body', html : true, title : kpiInfo.name + ' target range status additional infos', content : function(){ var html = ''; for(var moreInfoKey in kpiMeasure.targetRangeAlgorithmResult.moreInfo) html += ''; if(Object.keys(kpiMeasure.targetRangeAlgorithmResult.moreInfo).length==0) html += ''; html += '
'+moreInfoKey+''+kpiMeasure.targetRangeAlgorithmResult.moreInfo[moreInfoKey]+'
No additional infos available
'; return html; }(), trigger : 'hover' }); } var alertRangeStatusDomList = []; for(var i=0;i').append($(alertCurrentStatusHtml)).popover({ placement : 'auto right', container : 'body', html : true, title : kpiInfo.name + ' alert range status additional infos', content : function(){ var html = ''; for(var moreInfoKey in alertCurrentResult.moreInfo) html += ''; if(Object.keys(alertCurrentResult.moreInfo).length==0) html += ''; html += '
'+moreInfoKey+''+alertCurrentResult.moreInfo[moreInfoKey]+'
No additional infos available
'; return html; }(), trigger : 'hover' }); alertRangeStatusDomList.push(alertCurrentStatusDom); } var node = $('
').append( $('

' + kpiInfo.name + '

').popover(kpiInfoPopoverConfig) ).append( $('

' + kpiInfo.description + '

').popover(kpiInfoPopoverConfig) ).append( $('

').append( targetRangeStatusDom ).append( alertRangeStatusDomList ) ).append( tableDom ); return node; }, getConfiguration : function(){ return { modelId : { description : { en : '', de : '' }, value : '' }, kpiId : { description : { en : '', de : '' }, value : '' } }; }, createConfiguration : function(presetConfig){ var node = $('

').append( $('